import Request from '@/utils/luch-request/index.js'
import {ip} from '@/config/common.js'
const http = new Request()
/* 
1.  获取阿里云信息，不建议前端直接获取，这样会把accessKey等等私密信息暴露到前端，
	建议采用 前端请求后端，而后端对oss进行一系列的加密等操作 将信息返回给前端
 */
function getAliOssInfo() {
	return http.post(ip+'/oss/policy') //接口由后台提供
}
/* 
2. 图片上传到oss
 */
export async function uploadOss(filePath) {
	let resp = await getAliOssInfo() //请求后台获取oss信息
	if (resp.data.code === 200) {
		let {
			data
		} = resp.data //根据后台返回的值而取
		let fileType = filePath.substring(filePath.lastIndexOf('.') === -1 ? filePath.length : filePath.lastIndexOf('.')) || '.jpg' //获取图片类型后缀 .jpg .png
		// 正常的情况下，我们上传到oss都需要对文件进行重新命名以便我们进行更加合理的管理方式，
		// 比如 项目名称/模块名称/年/月/日/随意的字符串.图片格式 ，这里我就只获取图片格式了，
		let key = data.dir + (new Date()).valueOf() + fileType //那么我们上传到oss上，路径就是 test123.png || test123.jpg ...
		let result = await http.upload(data.host, {
			filePath,
			name: 'file',//真机一定要加这个，表示二进制数据流
			formData: {
				key, //文件名
				policy: data.policy, //后台获取超时时间
				OSSAccessKeyId: data.accessId, //后台获取临时ID
				success_action_status: '200', //让服务端返回200,不然，默认会返回204
				signature: data.signature ,//后台获取签名
			}
		})
		return data.host+'/'+key //上传成功后，返回文件访问地址
	}
}